/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Logistica.Controlador;

import CharliesCookies.MainController;
import com.dp1.pucp.Modelo.Clases.*;
import com.dp1.pucp.Logistica.DAO.*;
import com.dp1.pucp.Logistica.Vista.*;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

/**
 *
 * @author ubuntu64
 */
public class MantTipoProductoControlador {

    private TipoProductoDAO m;
    private MantTipoProductoGUI2 mantTipoProductoView;
    private ArrayList<Tipoproducto> lstTipoProducto;
    private ArrayList<String> lstTipo;
    private final static int ESTADO_ACTIVO = 1;
    private final static int ESTADO_INACTIVO = 0;
    
    public MantTipoProductoControlador(TipoProductoDAO dao, MantTipoProductoGUI2 v) {
        m = dao;
        mantTipoProductoView = v;
        
        llenarTipoCombo();
        mantTipoProductoView.addBuscarListener(new listarTipoProductos());
        mantTipoProductoView.addEditarListener(new editarTipoProductoListener(this));
        mantTipoProductoView.addNuevoListener(new crearTipoProductoListener(this));
        mantTipoProductoView.addLimpiarListener(new limpiarListener());
        mantTipoProductoView.addELiminarListener(new eliminarListener());
        mantTipoProductoView.addAsignarMPListener(new asignarMPListener(this));
        mantTipoProductoView.addVerRecetaListener(new verRecetaListener(this));
        
    }
    
    private void llenarTipoCombo() {
        lstTipo = m.listarTipoProducto();
        mantTipoProductoView.llenaComboTipo(lstTipo);
    }    
    
    public void listarResultados(int estado, String nombre) {
        lstTipoProducto = m.listarTipoProducto(estado, nombre);        
        mantTipoProductoView.llenaGrilla(lstTipoProducto);        
    }
    
    class listarTipoProductos implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            
            int estado = mantTipoProductoView.getEstado();
            String nombre = mantTipoProductoView.getNombre();
            //mantTipoProductoView.get
            
            listarResultados(estado, nombre);
        }
    }
    
    class verRecetaListener implements ActionListener {
        
        private MantTipoProductoControlador buc;

        public verRecetaListener(MantTipoProductoControlador buscarusr) {
            buc = buscarusr;
        }
        
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel = mantTipoProductoView.getFilaSel();
            if (sel != -1) {
                Tipoproducto u = lstTipoProducto.get(sel);
                
                DetalleRecetaPFGUI p = new DetalleRecetaPFGUI(mantTipoProductoView.getPadre(), true);
                
                DetalleRecetaControlador c = new DetalleRecetaControlador(m, p, buc, u);
                p.setVisible(true);
            }
        }
    }
    
    class asignarMPListener implements ActionListener {
        
        private MantTipoProductoControlador buc;

        public asignarMPListener(MantTipoProductoControlador buscarusr) {
            buc = buscarusr;
        }
        
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel = mantTipoProductoView.getFilaSel();
            if (sel != -1) {
                
                Tipoproducto u = lstTipoProducto.get(sel);                
                if (u.getTipo().equals("PF")) {
                    AsignarInsumoProductoGUI p = new AsignarInsumoProductoGUI(mantTipoProductoView.getPadre(), true);
                    AsignarInsumoProductoControlador d = new AsignarInsumoProductoControlador(m, p, buc, u, null, 1, -1, -1, u.getIdtipoproducto());
                    LogDAO.insertarLog(MainController.usuario, "Asignar Materia Prima");
                    p.setVisible(true);
                } else {
                    mantTipoProductoView.mostrarAviso("Debe seleccionar un Producto Final");
                }
            }
        }
    }    
    
    class crearTipoProductoListener implements ActionListener {
        
        private MantTipoProductoControlador buc;

        public crearTipoProductoListener(MantTipoProductoControlador buscarusr) {
            buc = buscarusr;
        }
        
        @Override
        public void actionPerformed(ActionEvent e) {
            TipoProductoGUI p = new TipoProductoGUI(mantTipoProductoView.getPadre(), true);
            TipoProductoControlador c = new TipoProductoControlador(m, p, buc, null);
            LogDAO.insertarLog(MainController.usuario, "Ingresar Agregar Tipo de Producto");
            p.setVisible(true);
        }
    }    
    
    class editarTipoProductoListener implements ActionListener {
        
        private MantTipoProductoControlador buc;

        public editarTipoProductoListener(MantTipoProductoControlador buscarusr) {
            buc = buscarusr;
        }

        @Override
        public void actionPerformed(ActionEvent e) {            
            int sel = mantTipoProductoView.getFilaSel();
            if (sel != -1) {
                TipoProductoGUI p = new TipoProductoGUI(mantTipoProductoView.getPadre(), true);
                Tipoproducto u = lstTipoProducto.get(sel);                
                TipoProductoControlador c = new TipoProductoControlador(m, p, buc, u);
                LogDAO.insertarLog(MainController.usuario, "Ingresar Editar Tipo de Producto");
                p.setVisible(true);                
            }
        }
    }    
    
    class limpiarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            mantTipoProductoView.LimpiarDatos();
        }        
    }    
    
    class eliminarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            int sel = mantTipoProductoView.getFilaSel();
            if (sel != -1) {
//                if (mantTipoProductoView.solicitarConfirmacion("¿Desea inactivar este usuario?")==0){
                Tipoproducto u = lstTipoProducto.get(sel);                
                u.setEstado(ESTADO_INACTIVO);
                m.guardarTipoProducto(u);
//                    mantTipoProductoView.mostrarAviso("Se inactivó el usuario con éxito");
                mantTipoProductoView.mostrarAviso("Se elimino exitosamente el producto");
                LogDAO.insertarLog(MainController.usuario, "Eliminar Tipo de Producto");
                //listarResultados();
//                }
//            }
//            else{
//                mantTipoProductoView.mostrarError("Debe seleccionar un usuario");
            }
        }        
    }    
}
